
A QR code is, at heart, a two-dimensional grid of black and white squares. The clever part is how that grid encodes data — and how the same pattern manages to survive crumpled labels, dirty scanners, and harsh light.
The three big corner squares
Look at any QR code and you’ll spot three large squares in the corners. These are finder patterns. They tell the scanner three things: that this is a QR code, which way is up, and how big it is. No matter how your phone holds it, the code can be read from any angle.
Everything else is data — generously
Between and around the finder patterns, the grid stores your payload in binary modules. QR codes pack far more data than a 1D barcode — alphanumeric, URL, binary and kanji modes — thanks to a dense, deliberate encoding scheme rather than simple width differences.
Error correction: the superpower
QR codes use Reed–Solomon error correction. A chunk of every code is deliberately redundant, so up to ~30% of the symbol can be damaged and it still decodes perfectly. That’s why a partially torn label still works — and why product teams can place artwork over part of the symbol without breaking it.
Four levels of error correction
- L — up to 7% damage, largest data capacity
- M — up to 15%
- Q — up to 25%
- H — up to 30% damage, smallest capacity
From pattern to webpage in a blink
Your phone decodes the module pattern into bytes, recognises a URL (or a Digital Link), and hands it to the browser. That’s the whole magic: a pattern of squares resolving to your product’s world in a fraction of a second.
Print quality matters. High-contrast, high-DPI symbols with quiet zones decode faster and more reliably.